package cn.gov.cus.rmftquartz.common.utils;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * 生成自定义主键的工具类。
 * @author wxming.
 * @date 2018/2/9.
 */
public class KeyUtil {

    public KeyUtil() {
    }

    private static String getRandomString(int strLength){
        StringBuilder rtn = new StringBuilder();
        Random random = new Random();

        for(int i = 0;i<strLength;++i){
            if(random.nextBoolean()) {
                if(random.nextBoolean()){
                    rtn.append((char)(65 + random.nextInt(26)));
                }else{
                    rtn.append((char)(97 + random.nextInt(26)));
                }
            }else{
                rtn.append(random.nextInt(10));
            }
        }
        return rtn.toString();
    }

    /**
     * 生成表的主键Id用。
     * @param header 用表名就行
     * @return 结果例子：RSK_ENTRY_20180206182529_8veEBx
     */
    public static String getKey(String header){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        return header.toUpperCase()+"_"+sdf.format(new Date())+"_"+getRandomString(6);
    }

    /**
     *
     * @param header 特定Id字段Id值的开头字母。
     * @return 结果例子：S20180209113228VLn9Tc
     */
    public static String getKeyWithOutUnderline(String header){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        return header.toUpperCase() + sdf.format(new Date())+getRandomString(6);
    }
}
